#!/usr/bin/env bash
# Copyright (c) 2016 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

OPTIND=1         # Reset in case getopts has been used previously in the shell.

function show_help {
    echo -e "$0:"
    echo -e "\t-h displays this help message"
    echo -e "\t-d logs output to a file $0-<pid>.log"
}

if [ $USER != "root" ] ; then
    #echo "Restarting script with sudo..."
    sudo $0 ${*}
    exit
fi

while getopts "h?d" opt; do
    case "$opt" in
    h|\?)  show_help
        exit 0
        ;;
    d)  exec &> >(tee -a "$0-$$.log")
        ;;
    esac
done

shift $((OPTIND-1))

if [ -z "$@" ]; then
    echo "You must specify a demo name"
    exit 0;
fi

if [ -f "$@" ]; then
    DEMO=$@
else
    echo "This is not a valid filename"
    exit 0;
fi

source $DEMO

RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'

function pause {
    echo ""; echo ""
    read -n1 -r -p "Press space to continue..." key
    printf "\033c"
}

function instruction {

    eval INSTR="$1"
    eval CMD="$2"
    echo ""
    echo -e "${RED}********************************************************************************${NC} \n"
    echo -e "${RED} ${INSTR} ${NC}"
    echo -e "${GREEN} ${CMD} ${NC} \n"
    echo -e "${RED}********************************************************************************${NC} \n"
}

#Clear and set netns and veths
/vagrant/netns.sh $C1_IP $C1_GW $C2_IP $C2_GW

#Clear the screen
printf "\033c"

if [ -e $DEMO.cmd ]; then
    rm $DEMO.cmd
fi

#Loop through instructions and commands from filename input as $@
for ((i=0;i<${#INSTR[@]};++i)); do
    instruction "\${INSTR[i]}" "\${CMD[i]}"
    eval "${CMD[i]}"
    echo -e "${CMD[i]}" >> $DEMO.cmd
    pause
done


exit 0


